package com.damon.authority.api.web.facade;

import com.damon.authority.api.dto.req.CreateTenantReq;
import com.damon.authority.api.dto.req.QueryTenantReq;
import com.damon.authority.api.dto.req.UpdateTenantReq;
import com.damon.authority.api.dto.resp.CreateTenantResp;
import com.damon.authority.api.dto.resp.TenantInfoResp;
import com.damon.authority.api.dto.resp.UpdateTenantResp;
import com.kylin.shared.common.Pagination;
import com.kylin.shared.common.ResponseWrapper;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * 租户管理接口方法
 * @author Damon S.
 * @version v1.0.1
 * @date 2020年05月27日 22:49
 */
@RequestMapping(value = "/manage_v1/tenants", produces = MediaType.APPLICATION_JSON_VALUE)
public interface TenantManageFacade {

    /**
     * 查询租户
     * @param req 查询参数
     * @return 返回值
     */
    @GetMapping
    ResponseWrapper<Pagination<TenantInfoResp>> search(
            @Valid QueryTenantReq req
    );

    /**
     * 新增租户
     * @param req 新增租户请求参数
     * @return 返回新增租户信息
     */
    @PostMapping
    ResponseWrapper<CreateTenantResp> create(
            @RequestBody @Valid CreateTenantReq req
    );

    /**
     * 更新租户
     * @param tenantId 更新租户ID
     * @param req 更新租户请求参数
     * @return 返回更新租户后的信息
     */
    @PostMapping("/{tenantId}")
    ResponseWrapper<UpdateTenantResp> update(
            @PathVariable Long tenantId,
            @RequestBody @Valid UpdateTenantReq req
    );

    /**
     * 获取指定租户信息
     * @param tenantId 租户ID
     * @return 返回租户信息
     */
    @GetMapping("/{tenantId}")
    ResponseWrapper<TenantInfoResp> find(@PathVariable Long tenantId);
}
